# BingerVPN

BingerVPN, a self-hosted OpenVPN server, replicates the functionality of a commercial VPN provider. This is done by enabling clients to securely connect to the server through an encrypted tunnel and make it appear as if their internet traffic comes from a different location. Our server includes a web-based monitoring dashboard that displays important client and server information. It also includes tools to generate necessary client profiles to connect to the VPN, which facilitate user authentication and ensure that only authorized users can access the network securely.

# Directory Structure

.
├── Server_UI/
│   ├── app.py
│   └── templates/
│       └── index.html
│
├── openvpn_scripts/
│   └── create_client_profile.sh
│
├── server/
│   └── server.conf

# Server_UI/app.py

Flask web application that:

 * Reads the OpenVPN status file
 * Parses active client connections
 * Displays them in a web UI
 * Shows server uptime
 * Displays server location on a map

Key features:

 * Parses a status log created in server.conf
 * Tracks:
     * client name
     * real IP Address
     * VPN IP Address
     * bytes in/out
     * connection time
 * Calculates uptime based on earliest connection

# Server_UI/templates/index.html
Frontend dashboard UI:

 * Displays:
     * server status
     * active clients
     * connection details
 * Includes a Leaflet.js map
 * Shows server location via coordinates

Features:

 * Clean dashboard layout
 * Alternating table rows
 * Embedded OpenStreetMap view

# OpenVPN_script/create_client_profile.sh

Script to generate OpenVPN client profiles:

Usage:

   ./create_client_profile.sh client_name

What it does:

 * Builds a .ovpn file
 * Embeds:
     * CA certificate
     * client certificate
     * private key
     * TLS auth key

# Server/server.conf

OpenVPN server configuration:

 * Runs on UDP port 1194
 * Uses AES-256-GCM encryption
 * Forces full tunnel routing
 * Uses Cloudflare + Google DNS

Important lines for the dashboard:

 * status /etc/openvpn/server/openvpn-status.log
 * status-version 3

These enable the monitoring system.

# Authors

Nikolas Tsalikis, Anthony Pacheco, Lucca Pinto, Federico Marrero-Riera, and Katherine Cruz

# Licenses

This project is licensed under the MIT License.

This project uses Leaflet.js, which is licensed under the MIT License.

This project uses map data from OpenStreetMap.

© OpenStreetMap contributors
https://www.openstreetmap.org

